home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple II Magazines (DO)
/
Micro on the Apple Volume 1 (1981)(Micro Ink)[no boot].zip
/
Micro on the Apple Volume 1 (1981)(Micro Ink)[no boot].do
/
QUICK.int
< prev
next >
Wrap
Text File
|
1996-12-24
|
4KB
|
128 lines
1 REM ************************
2 REM * *
3 REM * SORTING REVEALED *
4 REM * RICHARD C. VILE, JR. *
5 REM * *
6 REM * QUICK *
7 REM * *
8 REM * COPYRIGHT (C) 1981 *
9 REM * MICRO INK, INC. *
10 REM * CHELMSFORD, MA 01824 *
11 REM * ALL RIGHTS RESERVED *
12 REM * *
13 REM ************************
14 REM
15 DIM A(200),STACK(24)
16 KBD=-16384:CLR=-16368:TITLE=5000:INTRO=10000
17 DISPLAY=6000:CMP=6500:DELAY=6600
18 MUSIC=-10473:TIME=766:TIMBRE=765:PITCHY=767
20 TEXT :CALL -936
40 GOSUB INTRO
50 GOSUB TITLE
100 FOR I=0 TO N-1
105 A(I)= RND (100):X=I:GOSUB DISPLAY
110 NEXT I
115 A(N+1)=32767
120 P=0:Q=N
125 TOP=0:MAXTP=0
130 IF P>=Q THEN 170
135 K=Q+1
137 VTAB 23:TAB 34:PRINT "P= ";:IF P<100 THEN PRINT " ";:IF P<10 THEN PRINT " ";:PRINT P
138 TAB 34:PRINT "Q= ";:IF K<100 THEN PRINT " ";:IF K<10 THEN PRINT " ";:PRINT K;
139 GOSUB 1145
140 IF J-P<Q-J THEN 150
143 GOSUB 400
144 GOTO 160
150 GOSUB 500
160 TOP=TOP+2
161 IF TOP>MAXTP THEN MAXTP=TOP
162 VTAB 24:TAB 23:PRINT (TOP/2);
163 IF PEEK (KBD)>=128 THEN GOSUB 8000
165 GOTO 130
170 IF TOP=0 THEN 208
175 Q=STACK(TOP):P=STACK(TOP-1):TOP=TOP-2
176 GOSUB 7500
177 VTAB 24:TAB 23:PRINT (TOP/2);
179 IF PEEK (KBD)>=128 THEN GOSUB 8000
180 GOTO 130
208 VTAB 24:TAB 4:PRINT "FINISHED";
209 TAB 15:PRINT "MAXTOP= ";(MAXTP/2);
210 IF PEEK (KBD)<128 THEN 210
220 POKE CLR,0:CALL -936:GOTO 40
400 STACK(TOP+1)=P
405 STACK(TOP+2)=J-1
410 P=J+1
415 GOSUB 7000
499 RETURN
500 STACK(TOP+1)=J+1
505 STACK(TOP+2)=Q
510 Q=J-1
515 GOSUB 7000
599 RETURN
1145 V=A(P):I=P:J=K
1160 J=J-1:IF A(J)<=V THEN 1170
1162 GOSUB DELAY
1165 GOSUB CMP:GOTO 1160
1170 I=I+1:IF A(I)>=V THEN 1180
1172 GOSUB DELAY
1175 GOSUB CMP:GOTO 1170
1180 IF J<=I THEN 1200
1185 TEMP=A(I)
1186 A(I)=A(J):X=I:GOSUB DISPLAY
1188 A(J)=TEMP:X=J:GOSUB DISPLAY
1195 IF PEEK (KBD)<128 THEN 1160
1196 GOSUB 8000
1199 GOTO 1160
1200 A(P)=A(J):X=P:GOSUB DISPLAY
1202 A(J)=V:X=J:GOSUB DISPLAY
1999 RETURN
5000 TEXT :CALL -936
5010 VTAB 1:FOR I=0 TO 9:TAB 7+3*I:PRINT I;:NEXT I
5020 VTAB 2:TAB 7:FOR I=0 TO 9:PRINT "---";:NEXT I
5030 FOR J=0 TO 19:VTAB 3+J:TAB 3
5040 VTAB 23:TAB 3:PRINT "QUCKSORT PARTITION=======>"
5045 VTAB 24:TAB 15:PRINT "PENDING:0";
5050 VTAB 5:TAB 39:PRINT "S":TAB 39:PRINT "T":TAB 39:PRINT "A":TAB 39:PRINT "C":TAB 39:PRINT "K"
5060 FOR R=10 TO 22:TAB 39:PRINT ".":NEXT R
5099 RETURN
6000 COL=X MOD 10
6010 ROW=X/10
6020 POKE 50,63
6030 VTAB ROW+3:TAB 7+3*COL
6040 IF A(X)<10 THEN PRINT " ";
6050 PRINT A(X);
6060 POKE 50,255
6070 VTAB ROW+3:TAB 7+3*COL
6080 IF A(X)<10 THEN PRINT " ";
6090 PRINT A(X);
6100 REM ***TO REMOVE INT SOUND, 6101 INSERTED***
6101 RETURN
6110 POKE PITCH,49: POKE TIME,3:CALL MUSIC
6199 RETURN
6500 REM ***TO REMOVE COMP. SOUNDS, 6501 INSERTED***
6501 RETURN
6510 POKE PITCH,10: POKE TIME,5:CALL MUSIC
6599 RETURN
6600 FOR DE=0 TO PDL (1):NEXT DE
6699 RETURN
7000 VTAB 21-TOP:TAB 37
7005 TOS=STACK(TOP+1):NOS=STACK(TOP+2)
7010 IF NOS<100 THEN PRINT " ";:IF NOS<10 THEN PRINT " ";:PRINT NOS
7015 TAB 37:IF TOS<100 THEN PRINT " ";:IF TOS<10 THEN PRINT " ";:PRINT TOS;
7499 RETURN
7500 VTAB 21-TOP:TAB 37:PRINT " ":TAB 37:PRINT " ";
7999 RETURN
8000 POKE CLR,0
8005 IF PEEK (KBD)<128 THEN 8005
8010 POKE CLR,0
8099 RETURN
10000 VTAB 10:TAB 5:PRINT "I WILL SORT UP TO 100 POSITIVE"
10010 TAB 5:PRINT "INTEGERS INTO ASCENDING"
10020 TAB 5:PRINT "ORDER USING HOARE'S QUICKSORT."
10030 VTAB 15:TAB 10:INPUT "VALUE OF N PLEASE",N
10040 IF N>0 THEN 10060
10050 TEXT :CALL -936:END
10060 IF N<=199 THEN RETURN
10070 TAB 10
10080 PRINT "TOO BIG!!!!!":GOTO 10000